package site.lianwu.mybatis.plus.query.processor;

import site.lianwu.mybatis.plus.query.QueryOption;
import site.lianwu.mybatis.plus.query.define.PostProcessor;

import java.util.Optional;

/**
 * 基条件包装处理器，关联查询类处理器
 *
 * @author LianWu
 */
public abstract class BaseQueryWrapperProcessor implements QueryWrapperProcessor {

    /**
     * 查询类处理器，用于提取和解析查询类
     */
    protected final QueryClassProcessor queryClassProcessor;

    public BaseQueryWrapperProcessor(QueryClassProcessor queryClassProcessor) {
        this.queryClassProcessor = queryClassProcessor;
    }

    /**
     * 获取后置处理器
     *
     * @param group 分组
     * @param option 查询选项
     * @param <T> 查询结果类型
     * @return 后置处理器
     */
    protected <T> Optional<PostProcessor<T>> getPostProcessor(String group, QueryOption<T> option) {
        return option == null ? Optional.empty() : option.getPostProcessor(group);
    }

}
